/*
Copyright (c) 2025 HeZongLun
NahidaProject is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan
PSL v2.
You may obtain a copy of Mulan PSL v2 at:
		 http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/

#pragma once

#ifdef _WIN32
#define ExportSymbol  __declspec(dllexport)
#else
#define ExportSymbol
#endif

#include <iostream>
#include <format>

namespace NahidaProject {
	class ExportSymbol Vector {
	private:
		float x1, y1, x2, y2;
		float positionX;
		float positionY;

	public:
		Vector(float x1, float y1, float x2, float y2) {
			this->x1 = x1;
			this->x2 = x2;
			this->y1 = y1;
			this->y2 = y2;
			this->positionX = x2 - x1;
			this->positionY = y2 - y1;
		}

		Vector Add(Vector anotherVector);
		Vector Minus(Vector anotherVector);
		Vector MultiplyByNumber(float number);
		float MultiplyByVector(Vector anotherVector);

		Vector operator+(Vector anotherVector);
		Vector operator-(Vector anotherVector);
		Vector operator*(float number);

		float Length();
		std::string ToString();
	};
}
